<?php

/*
 * Escort DAL.
 * @Autor: Inicial.cl.
 */

class EscortDAL {

    //METODO PARA GRABAR ESCORT.
    public static function grabar($oEscort) {
        try {
            $arr = array(
                "{#NOMBRE}" => $oEscort->getNombre(),
                "{#PESO}" => $oEscort->getPeso(),
                "{#ALTURA}" => $oEscort->getAltura(),
                "{#MEDIDAS}" => $oEscort->getMedidas(),
                "{#OJOS}" => $oEscort->getOjos(),
                "{#EDAD}" => $oEscort->getEdad(),
                "{#PIEL}" => $oEscort->getPiel(),
                "{#PELO}" => $oEscort->getPelo(),
                "{#NACIONALIDAD}" => $oEscort->getNacionalidad(),
                "{#IDIOMAS}" => $oEscort->getIdiomas(),
                "{#TELEFONO}" => $oEscort->getTelefono(),
                "{#DIRECCION}" => $oEscort->getDireccion(),
                "{#HORARIO}" => $oEscort->getHorario(),
                "{#VALORNORMAL}" => $oEscort->getValorNormal(),
                "{#VALORPREMIUM}" => $oEscort->getValorPremium(),
                "{#VALORMEDIA}" => $oEscort->getValorMedia(),
                "{#VALORPROMO}" => $oEscort->getValorPromo(),
                "{#INDEPENDIENTE}" => $oEscort->getIndependiente(),
                "{#DESTACADA}" => $oEscort->getDestacada(),
                "{#CERTIFICADA}" => $oEscort->getCertificada(),
                "{#FECHACREACION}" => $oEscort->getFechaCreacion(),
                "{#LATITUD}" => $oEscort->getLatitud(),
                "{#LONGITUD}" => $oEscort->getLongitud(),
                "{#VOTO}" => $oEscort->getVoto(),
                "{#IDUSUARIO}" => $oEscort->getIdUsuario(),
                "{#DESCRIPCION}" => $oEscort->getDescripcion()
            );
            $query = Util::getQuery($arr, EscortSQL::$GRABAR_ESCORT);
            $arrDatos = Bd::exec($query);

            $id = Bd::$IDENTITY; //Retorno id insertado
            return $id;
        } catch (Excepcion $e) {
            throw new Exception($e->getMessage());
        }
    }

    //METODO PARA EDITAR ESCORT.
    public static function editar($oEscort) {
        try {
            $arr = array(
                "{#ID}" => $oEscort->getId(),
                "{#NOMBRE}" => $oEscort->getNombre(),
                "{#PESO}" => $oEscort->getPeso(),
                "{#ALTURA}" => $oEscort->getAltura(),
                "{#MEDIDAS}" => $oEscort->getMedidas(),
                "{#OJOS}" => $oEscort->getOjos(),
                "{#EDAD}" => $oEscort->getEdad(),
                "{#PIEL}" => $oEscort->getPiel(),
                "{#PELO}" => $oEscort->getPelo(),
                "{#NACIONALIDAD}" => $oEscort->getNacionalidad(),
                "{#IDIOMAS}" => $oEscort->getIdiomas(),
                "{#TELEFONO}" => $oEscort->getTelefono(),
                "{#DIRECCION}" => $oEscort->getDireccion(),
                "{#HORARIO}" => $oEscort->getHorario(),
                "{#VALORNORMAL}" => $oEscort->getValorNormal(),
                "{#VALORPREMIUM}" => $oEscort->getValorPremium(),
                "{#VALORMEDIA}" => $oEscort->getValorMedia(),
                "{#VALORPROMO}" => $oEscort->getValorPromo(),
                "{#INDEPENDIENTE}" => $oEscort->getIndependiente(),
                "{#DESTACADA}" => $oEscort->getDestacada(),
                "{#CERTIFICADA}" => $oEscort->getCertificada(),
                "{#FECHACREACION}" => $oEscort->getFechaCreacion(),
                "{#LATITUD}" => $oEscort->getLatitud(),
                "{#LONGITUD}" => $oEscort->getLongitud(),
                "{#VOTO}" => $oEscort->getVoto(),
                "{#IDUSUARIO}" => $oEscort->getIdUsuario(),
                "{#DESCRIPCION}" => $oEscort->getDescripcion()
            );
            $query = Util::getQuery($arr, EscortSQL::$EDITAR_ESCORT);
            $arrDatos = Bd::exec($query);
        } catch (Excepcion $e) {
            throw new Exception($e->getMessage());
        }
    }

    //METODO PARA LISTAR ESCORT.
    public static function listar($oEscort) {
        try {
            $arr = array("{#IDESTADO}" => $oEscort->getIdEstado());
            $query = Util::getQuery($arr, EscortSQL::$LISTAR_ESCORT);
            $arrDatos = Bd::exec($query);
            $arrEscort = array();

            if (count($arrDatos) > 0) {
                foreach ($arrDatos as $row) {
                    $oEscort = new Escort();

                    $oEscort->setId($row["id"]);
                    $oEscort->setIdEstado($row["idEstado"]);
                    $oEscort->setNombre($row["nombre"]);
                    $oEscort->setPeso($row["peso"]);
                    $oEscort->setAltura($row["altura"]);
                    $oEscort->setMedidas($row["medidas"]);
                    $oEscort->setOjos($row["ojos"]);
                    $oEscort->setEdad($row["edad"]);
                    $oEscort->setPiel($row["piel"]);
                    $oEscort->setPelo($row["pelo"]);
                    $oEscort->setNacionalidad($row["nacionalidad"]);
                    $oEscort->setIdiomas($row["idiomas"]);
                    $oEscort->setTelefono($row["telefono"]);
                    $oEscort->setDireccion($row["direccion"]);
                    $oEscort->setHorario($row["horario"]);
                    $oEscort->setValorNormal($row["valorNormal"]);
                    $oEscort->setValorPremium($row["valorPremium"]);
                    $oEscort->setValorMedia($row["valorMedia"]);
                    $oEscort->setValorPromo($row["valorPromo"]);
                    $oEscort->setIndependiente($row["independiente"]);
                    $oEscort->setIdComuna($row["idComuna"]);
                    $oEscort->setDestacada($row["destacada"]);
                    $oEscort->setCertificada($row["certificada"]);
                    $oEscort->setFechaCreacion($row["fechaCreacion"]);
                    $oEscort->setLatitud($row["latitud"]);
                    $oEscort->setLongitud($row["longitud"]);
                    $oEscort->setVoto($row["voto"]);
                    $oEscort->setIdUsuario($row["idUsuario"]);

                    $arrEscort[] = $oEscort;
                }
            }

            return $arrEscort;
        } catch (Excepcion $e) {
            throw new Exception($e->getMessage());
        }
    }

    //METODO PARA OBTENER POR ID ESCORT.
    public static function obtenerPorId($id) {
        try {
            $arr = array(
                "{#ID}" => $id
            );
            $query = Util::getQuery($arr, EscortSQL::$OBTENER_ESCORT_POR_ID);
            $arrDatos = Bd::exec($query);

            if (count($arrDatos) > 0) {
                $oEscort = new Escort();

                foreach ($arrDatos as $row) {
                    $oEscort->setId($row["id"]);
                    $oEscort->setIdEstado($row["idEstado"]);
                    $oEscort->setNombre($row["nombre"]);
                    $oEscort->setPeso($row["peso"]);
                    $oEscort->setAltura($row["altura"]);
                    $oEscort->setMedidas($row["medidas"]);
                    $oEscort->setOjos($row["ojos"]);
                    $oEscort->setEdad($row["edad"]);
                    $oEscort->setPiel($row["piel"]);
                    $oEscort->setPelo($row["pelo"]);
                    $oEscort->setNacionalidad($row["nacionalidad"]);
                    $oEscort->setIdiomas($row["idiomas"]);
                    $oEscort->setTelefono($row["telefono"]);
                    $oEscort->setDireccion($row["direccion"]);
                    $oEscort->setHorario($row["horario"]);
                    $oEscort->setValorNormal($row["valorNormal"]);
                    $oEscort->setValorPremium($row["valorPremium"]);
                    $oEscort->setValorMedia($row["valorMedia"]);
                    $oEscort->setValorPromo($row["valorPromo"]);
                    $oEscort->setIndependiente($row["independiente"]);
                    $oEscort->setIdComuna($row["idComuna"]);
                    $oEscort->setDestacada($row["destacada"]);
                    $oEscort->setCertificada($row["certificada"]);
                    $oEscort->setFechaCreacion($row["fechaCreacion"]);
                    $oEscort->setLatitud($row["latitud"]);
                    $oEscort->setLongitud($row["longitud"]);
                    $oEscort->setVoto($row["voto"]);
                    $oEscort->setIdUsuario($row["idUsuario"]);
                    $oEscort->setDescripcion($row["descripcion"]);
                    $oEscort->setComuna($row["comuna"]);
                }
                return $oEscort;
            }
        } catch (Excepcion $e) {
            throw new Exception($e->getMessage());
        }
    }

    //METODO PARA ELIMINAR ESCORT.
    public static function eliminar($id) {
        try {
            $arr = array("{#ID}" => $id);
            $query = Util::getQuery($arr, EscortSQL::$ELIMINAR_ESCORT);
            $arrDatos = Bd::exec($query);
        } catch (Excepcion $e) {
            throw new Exception($e->getMessage());
        }
    }

    //METODO PARA LISTAR DESTACADAS.
    public static function listarDestacadas() {
        try {
            $arr = array();
            $query = Util::getQuery($arr, EscortSQL::$LISTAR_DESCATADAS);
            $arrDatos = Bd::exec($query);
            $arrEscort = array();

            if (count($arrDatos) > 0) {
                foreach ($arrDatos as $row) {
                    $oEscort = new Escort();

                    $oEscort->setId($row["id"]);
                    $oEscort->setIdEstado($row["idEstado"]);
                    $oEscort->setNombre($row["nombre"]);
                    $oEscort->setPeso($row["peso"]);
                    $oEscort->setAltura($row["altura"]);
                    $oEscort->setMedidas($row["medidas"]);
                    $oEscort->setOjos($row["ojos"]);
                    $oEscort->setEdad($row["edad"]);
                    $oEscort->setPiel($row["piel"]);
                    $oEscort->setPelo($row["pelo"]);
                    $oEscort->setNacionalidad($row["nacionalidad"]);
                    $oEscort->setIdiomas($row["idiomas"]);
                    $oEscort->setTelefono($row["telefono"]);
                    $oEscort->setDireccion($row["direccion"]);
                    $oEscort->setHorario($row["horario"]);
                    $oEscort->setValorNormal($row["valorNormal"]);
                    $oEscort->setValorPremium($row["valorPremium"]);
                    $oEscort->setValorMedia($row["valorMedia"]);
                    $oEscort->setValorPromo($row["valorPromo"]);
                    $oEscort->setIndependiente($row["independiente"]);
                    $oEscort->setIdComuna($row["idComuna"]);
                    $oEscort->setDestacada($row["destacada"]);
                    $oEscort->setCertificada($row["certificada"]);
                    $oEscort->setFechaCreacion($row["fechaCreacion"]);
                    $oEscort->setLatitud($row["latitud"]);
                    $oEscort->setLongitud($row["longitud"]);
                    $oEscort->setVoto($row["voto"]);
                    $oEscort->setIdUsuario($row["idUsuario"]);

                    $arrEscort[] = $oEscort;
                }
            }

            return $arrEscort;
        } catch (Excepcion $e) {
            throw new Exception($e->getMessage());
        }
    }

    //METODO PARA LISTAR 
    public static function listarRelacionadas($idEscort) {
        try {
            $arr = array("{#IDESCORT}" => $idEscort);
            $query = Util::getQuery($arr, EscortSQL::$LISTAR_RELACIONADAS);
            $arrDatos = Bd::exec($query);
            $arrEscort = array();

            if (count($arrDatos) > 0) {
                foreach ($arrDatos as $row) {
                    $oEscort = new Escort();

                    $oEscort->setId($row["id"]);
                    $oEscort->setIdEstado($row["idEstado"]);
                    $oEscort->setNombre($row["nombre"]);
                    $oEscort->setPeso($row["peso"]);
                    $oEscort->setAltura($row["altura"]);
                    $oEscort->setMedidas($row["medidas"]);
                    $oEscort->setOjos($row["ojos"]);
                    $oEscort->setEdad($row["edad"]);
                    $oEscort->setPiel($row["piel"]);
                    $oEscort->setPelo($row["pelo"]);
                    $oEscort->setNacionalidad($row["nacionalidad"]);
                    $oEscort->setIdiomas($row["idiomas"]);
                    $oEscort->setTelefono($row["telefono"]);
                    $oEscort->setDireccion($row["direccion"]);
                    $oEscort->setHorario($row["horario"]);
                    $oEscort->setValorNormal($row["valorNormal"]);
                    $oEscort->setValorPremium($row["valorPremium"]);
                    $oEscort->setValorMedia($row["valorMedia"]);
                    $oEscort->setValorPromo($row["valorPromo"]);
                    $oEscort->setIndependiente($row["independiente"]);
                    $oEscort->setIdComuna($row["idComuna"]);
                    $oEscort->setDestacada($row["destacada"]);
                    $oEscort->setCertificada($row["certificada"]);
                    $oEscort->setFechaCreacion($row["fechaCreacion"]);
                    $oEscort->setLatitud($row["latitud"]);
                    $oEscort->setLongitud($row["longitud"]);
                    $oEscort->setVoto($row["voto"]);
                    $oEscort->setIdUsuario($row["idUsuario"]);

                    $arrEscort[] = $oEscort;
                }
            }

            return $arrEscort;
        } catch (Excepcion $e) {
            throw new Exception($e->getMessage());
        }
    }

    //METODO PARA LISTAR DESTACADAS.
    public static function listarTop5() {
        try {
            $arr = array();
            $query = Util::getQuery($arr, EscortSQL::$LISTAR_TOP_5);
            $arrDatos = Bd::exec($query);
            $arrEscort = array();

            if (count($arrDatos) > 0) {
                foreach ($arrDatos as $row) {
                    $oEscort = new Escort();

                    $oEscort->setId($row["id"]);
                    $oEscort->setIdEstado($row["idEstado"]);
                    $oEscort->setNombre($row["nombre"]);
                    $oEscort->setPeso($row["peso"]);
                    $oEscort->setAltura($row["altura"]);
                    $oEscort->setMedidas($row["medidas"]);
                    $oEscort->setOjos($row["ojos"]);
                    $oEscort->setEdad($row["edad"]);
                    $oEscort->setPiel($row["piel"]);
                    $oEscort->setPelo($row["pelo"]);
                    $oEscort->setNacionalidad($row["nacionalidad"]);
                    $oEscort->setIdiomas($row["idiomas"]);
                    $oEscort->setTelefono($row["telefono"]);
                    $oEscort->setDireccion($row["direccion"]);
                    $oEscort->setHorario($row["horario"]);
                    $oEscort->setValorNormal($row["valorNormal"]);
                    $oEscort->setValorPremium($row["valorPremium"]);
                    $oEscort->setValorMedia($row["valorMedia"]);
                    $oEscort->setValorPromo($row["valorPromo"]);
                    $oEscort->setIndependiente($row["independiente"]);
                    $oEscort->setIdComuna($row["idComuna"]);
                    $oEscort->setDestacada($row["destacada"]);
                    $oEscort->setCertificada($row["certificada"]);
                    $oEscort->setFechaCreacion($row["fechaCreacion"]);
                    $oEscort->setLatitud($row["latitud"]);
                    $oEscort->setLongitud($row["longitud"]);
                    $oEscort->setVoto($row["voto"]);
                    $oEscort->setIdUsuario($row["idUsuario"]);

                    $arrEscort[] = $oEscort;
                }
            }

            return $arrEscort;
        } catch (Excepcion $e) {
            throw new Exception($e->getMessage());
        }
    }

    //METODO PARA LISTAR DESTACADAS.
    public static function listarUltimasDiosas() {
        try {
            $arr = array();
            $query = Util::getQuery($arr, EscortSQL::$LISTAR_ULTIMAS_DIOSAS);
            $arrDatos = Bd::exec($query);
            $arrEscort = array();

            if (count($arrDatos) > 0) {
                foreach ($arrDatos as $row) {
                    $oEscort = new Escort();

                    $oEscort->setId($row["id"]);
                    $oEscort->setIdEstado($row["idEstado"]);
                    $oEscort->setNombre($row["nombre"]);
                    $oEscort->setPeso($row["peso"]);
                    $oEscort->setAltura($row["altura"]);
                    $oEscort->setMedidas($row["medidas"]);
                    $oEscort->setOjos($row["ojos"]);
                    $oEscort->setEdad($row["edad"]);
                    $oEscort->setPiel($row["piel"]);
                    $oEscort->setPelo($row["pelo"]);
                    $oEscort->setNacionalidad($row["nacionalidad"]);
                    $oEscort->setIdiomas($row["idiomas"]);
                    $oEscort->setTelefono($row["telefono"]);
                    $oEscort->setDireccion($row["direccion"]);
                    $oEscort->setHorario($row["horario"]);
                    $oEscort->setValorNormal($row["valorNormal"]);
                    $oEscort->setValorPremium($row["valorPremium"]);
                    $oEscort->setValorMedia($row["valorMedia"]);
                    $oEscort->setValorPromo($row["valorPromo"]);
                    $oEscort->setIndependiente($row["independiente"]);
                    $oEscort->setIdComuna($row["idComuna"]);
                    $oEscort->setDestacada($row["destacada"]);
                    $oEscort->setCertificada($row["certificada"]);
                    $oEscort->setFechaCreacion($row["fechaCreacion"]);
                    $oEscort->setLatitud($row["latitud"]);
                    $oEscort->setLongitud($row["longitud"]);
                    $oEscort->setVoto($row["voto"]);
                    $oEscort->setIdUsuario($row["idUsuario"]);

                    $arrEscort[] = $oEscort;
                }
            }

            return $arrEscort;
        } catch (Excepcion $e) {
            throw new Exception($e->getMessage());
        }
    }

    //METODO PARA OBTENER POR IDUSUARIO
    public static function obtenerPorIdUsuario($id) {
        try {
            $arr = array(
                "{#ID}" => $id
            );
            $query = Util::getQuery($arr, EscortSQL::$OBTENER_ESCORT_POR_ID_USUARIO);
            $arrDatos = Bd::exec($query);

            if (count($arrDatos) > 0) {
                $oEscort = new Escort();

                foreach ($arrDatos as $row) {
                    $oEscort->setId($row["id"]);
                    $oEscort->setIdEstado($row["idEstado"]);
                    $oEscort->setNombre($row["nombre"]);
                    $oEscort->setPeso($row["peso"]);
                    $oEscort->setAltura($row["altura"]);
                    $oEscort->setMedidas($row["medidas"]);
                    $oEscort->setOjos($row["ojos"]);
                    $oEscort->setEdad($row["edad"]);
                    $oEscort->setPiel($row["piel"]);
                    $oEscort->setPelo($row["pelo"]);
                    $oEscort->setNacionalidad($row["nacionalidad"]);
                    $oEscort->setIdiomas($row["idiomas"]);
                    $oEscort->setTelefono($row["telefono"]);
                    $oEscort->setDireccion($row["direccion"]);
                    $oEscort->setHorario($row["horario"]);
                    $oEscort->setValorNormal($row["valorNormal"]);
                    $oEscort->setValorPremium($row["valorPremium"]);
                    $oEscort->setValorMedia($row["valorMedia"]);
                    $oEscort->setValorPromo($row["valorPromo"]);
                    $oEscort->setIndependiente($row["independiente"]);
                    $oEscort->setIdComuna($row["idComuna"]);
                    $oEscort->setDestacada($row["destacada"]);
                    $oEscort->setCertificada($row["certificada"]);
                    $oEscort->setFechaCreacion($row["fechaCreacion"]);
                    $oEscort->setLatitud($row["latitud"]);
                    $oEscort->setLongitud($row["longitud"]);
                    $oEscort->setVoto($row["voto"]);
                    $oEscort->setIdUsuario($row["idUsuario"]);
                    $oEscort->setDescripcion($row["descripcion"]);
                }
                return $oEscort;
            }
        } catch (Excepcion $e) {
            throw new Exception($e->getMessage());
        }
    }

    public static function votar($id) {
        try {
            $arr = array("{#ID}" => $id);
            $query = Util::getQuery($arr, EscortSQL::$VOTAR);
            Bd::exec($query);
        } catch (Excepcion $e) {
            throw new Exception($e->getMessage());
        }
    }

    public static function eliminarServicios($id) {
        try {
            $arr = array("{#ID}" => $id);
            $query = Util::getQuery($arr, EscortSQL::$ELIMINAR_SERVICIO_ESCORT);
            $arrDatos = Bd::exec($query);
        } catch (Excepcion $e) {
            throw new Exception($e->getMessage());
        }
    }

    public static function grabarServicios($id, $listadoIdServicios) {
        try {
            $arr = array(
                "{#ID}" => $id,
                "{#LISTADO_ID_SERVICIOS}" => $listadoIdServicios
            );
            $query = Util::getQuery($arr, EscortSQL::$GRABAR_SERVICIOS_ESCORT);
            $arrDatos = Bd::exec($query);

            return $arrDatos;
        } catch (Excepcion $e) {
            throw new Exception($e->getMessage());
        }
    }

}

?>